Objects having usage rules that exist outside of the environment in which the object is used

ABSTRACT

An object that is usable in a plurality of different environments comprises at least one property having an associated rule that affects the object. The object and at least one of its properties and associated rules exist outside of an environment that the object is used in. The rule associated with the at least one property is enforced in the plurality of different environments.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Patent Application No. 61/041,839 filed Apr. 2, 2008.

COPYRIGHT NOTICE AND AUTHORIZATION

Portions of the documentation in this patent document contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyright rights whatsoever.

BACKGROUND OF THE INVENTION

It is well-known to use objects within an electronic document. The object may cause text and/or images to appear in the electronic document at a user-defined location. Objects may include rules that affect the object. However, rules in conventional objects are associated with the environment that the object is used in, such as the particular document that the object is used in. It would be desirable to define objects that are not constrained in this manner. The present invention fulfills such a need.

BRIEF SUMMARY OF THE INVENTION

In one preferred embodiment, an object that is usable in a plurality of different environments comprises at least one property having an associated rule that affects the object. The object and at least one of its properties and associated rules exist outside of an environment that the object is used in. The rule associated with the at least one property is enforced in the plurality of different environments.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing summary as well as the following detailed description of preferred embodiments of the invention, will be better understood when read in conjunction with the appended drawings. For the purpose of illustrating the invention, the drawings show presently preferred embodiments. However, the invention is not limited to the precise arrangements and instrumentalities shown. In the drawings:

FIGS. 1-71 are user interface display screens in accordance with preferred embodiments of the present invention.

FIG. 72 is a schematic diagram of a hardware configuration in accordance with one preferred embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Certain terminology is used herein for convenience only and is not to be taken as a limitation on the present invention.

This patent application includes an Appendix having a file named appendix10379-26U1.txt, created on Mar. 30, 2009, and having a size of 1,466,432 bytes. The Appendix is incorporated by reference into the present patent application. One preferred embodiment of the present invention is implemented via the source code in the Appendix. The Appendix is subject to the “Copyright Notice and Authorization” stated above.

The present invention is described in the context of a web-based commercial implementation called Improv™ marketed by Colorquick, L.L.C, Pennsauken, N.J. Improv is a document composition application.

FIGS. 1-11 show the creation of an object, the association of rules to properties of that object, the enforcement of those rules, and the saving of that object and the associated rules as a “Smart Object” to a digital asset library of Smart Objects outside of the document and application in which the object was created.

In one preferred embodiment, a smart object is an object that is usable in a plurality of different environments. The object comprises at least one property having an associated rule that affects the object. The object and the at least one property and associated rule exists outside of an environment that the object is used in. The rule associated with the at least one property is enforced in the plurality of different environments.

In another preferred embodiment, a smart object is an object that is usable in a plurality of different environments. The object comprises at least one property having an associated rule that affects the environment that the object is used in. The object and the at least one property and associated rule exists outside of an environment that the object is used in. The rule associated with the at least one property is enforced in the plurality of different environments.

In other preferred embodiments, a smart object is an object that is usable in a plurality of different environments. The object comprises at least one rule that affects either the object or the environment that the object is used in. The object and the at least one rule exists outside of an environment that the object is used in. The at least one rule is enforced in the plurality of different environments.

From the blank document shown in FIG. 1, the user creates a new image box in FIG. 2, which is shown completed in FIG. 3. FIG. 4 shows a view of the digital asset library of images available to the user that may be placed in the image box. In FIG. 5, the image box has been moved to the top left corner of the document for later illustrative purposes.

FIGS. 6-7 show rules being associated with properties of the image box. FIG. 6 shows a user constraining the location, width and height of the box to its current values. These are invariant rules. FIG. 7 shows the user constraining the scale of any image placed in the image box to the scale that will resize the image to the size of the box. These rules are enforced in these figures, but since the current values of the constrained properties are valid given these new rules, there are no new visual indications of these enforcements.

The digital asset library of currently saved Smart Objects is shown in FIG. 8. In FIG. 9, the user saves the image box along with the rules associated with the properties of the image box as a Smart Object to the digital asset library outside of the document and application. FIG. 10 shows that the attempt to save has succeeded. FIG. 11 shows that the newly saved Smart Object is now in the digital asset library.

FIGS. 12-17 show the use of the previously mentioned Smart Object within the document it was created in.

FIG. 12 shows the Smart Object being populated with an image that is immediately and automatically resized to the size of the box as shown in FIG. 13. This is due to the enforcement of the rules associated with the properties of the image box in FIG. 7. FIG. 14 and 15 show the same action and effect with an image of a different aspect ratio.

FIG. 16 shows the user attempting to move the image box in violation of the rules associated with properties of the image box in FIG. 6, and FIG. 17 shows that the user cannot move the image box because of the enforcement of these rules.

FIGS. 18-27 show the use of the aforementioned Smart Object within a new, second document.

FIG. 18 shows a second, new blank document in a new instance of the application. FIG. 19 shows the user opening the digital asset library of Smart Objects and FIG. 20 shows the user adding the Smart Object that was created in the previous example to the new document. FIG. 21 shows the digital asset library of images the user may select from. FIGS. 22 and 23 show the user populating the image box with the same image in a manner similar to FIGS. 12 and 13 and with the same effect. FIGS. 24 and 25 show the same action and effect with yet another image. FIG. 26 shows the user attempting to move the image box in violation of the rules associated in FIG. 6, and FIG. 27 shows that the user cannot move the image box in a similar manner as shown in FIGS. 16 and 17.

FIG. 28 shows a specific user logging into a website that hosts the application shown in the previous figures. FIG. 29 shows the user creating a new document by clicking the “Start New Order” tab.

FIGS. 30-38 show the user creating and saving a new Smart Object.

FIG. 30 shows the user creating a new text box on the new document, the result of which is shown in FIG. 31.

FIG. 32 shows that the user has created a new variable field in the text box linked to the variable “user.FirstName”. FIG. 33 shows the document after the user has added other variable fields to the same textbox.

FIG. 34A shows the user setting a rule constraining the property that determines the x-coordinate of the left side of the text box. The effect of the restriction effectively prevents the TextBox from being less than 0.5 inches from either side of the document if and only if the type of the document is an “Envelope”.

FIG. 34B shows a similar action pertaining to the y-coordinate. This restriction prevents the text box from being less than 2.75 inches from the top of the document and 0.065 inches from the bottom of the document if and only if the type of the document is an “Envelope”.

FIGS. 35-38 show the text box being saved as a Smart Object in the same manner as Smart Objects have been saved in previous discussions.

FIGS. 39-41 show the same user setting up a new document in a new instance of the application.

FIG. 39 shows the same user having opened a new document in a new instance of the application. FIG. 41 shows the user resizing the document. FIG. 42 shows the user changing the document type to “Envelope”.

FIGS. 42-45 show a user importing a copy of the previously mentioned Smart Object into the new document.

FIG. 43 shows that the Smart Object was automatically moved to a position that does not violate the rules set up in FIGS. 34A and 34B. FIG. 44 shows that the variable fields have not changed. FIG. 45 illustrates that the rules that enforce the valid positions of the text box in FIGS. 34A and 34B are the same rules that are being enforced in FIG. 43.

FIGS. 46-48 shows a second user logging in and creating a new document in a new instance of the application.

FIG. 46 shows a second user logging into the website. FIG. 47 shows a new document that the user is editing. FIG. 48 shows the user changing the document type to “Envelope”.

FIGS. 49-50 show the second user importing a copy of the previously mentioned Smart Object into a document.

FIG. 49 shows that this second user has access to the Smart Object that the previous user created. FIG. 50 shows the condition of the document after the user has added this Smart Object. The rules constraining the location of the text box were still enforced as in FIG. 43. The variable fields in the text box automatically took on different values than they did for the previous user. The values reflect information of the current user that is using the Smart Object, not information of the user that created the Smart Object.

FIG. 51 shows an unspecific user creating a new blank document in a new instance of the application.

FIGS. 52-58 show the user creating a new populated image box with rules that affect the environment that the image box is used in.

FIG. 52 shows an image box being drawn which is completed in FIG. 53. FIG. 54 shows the user browsing their digital asset library of images.

FIG. 55 shows the user creating a rule that requires that the “Disclaimer” property of the image placed within the image box be displayed somewhere in the document. FIG. 56 shows an image being added to the image box. FIG. 57 shows the image box populated with the image. FIG. 58 shows that the activity that occurred in FIG. 57 caused the document to throw an error because the “Disclaimer” property is now valid but is not used.

FIGS. 59-60 show a user creating a new text box in the same manner as discussed above.

FIGS. 61A-61C and FIG. 62 show the user populating the aforementioned text box with a variable.

FIG. 61A shows the user browsing the properties of the image box. FIGS. 61B and 61C show the user dragging and dropping a graphic handle representing the “Disclaimer” property into the text box. FIG. 62 shows the result of this drop and drag that the text box is now populated with the “Disclaimer” value and the error has disappeared.

FIGS. 63-64 show the users saving the image box as a Smart Object in the same manner as discussed above.

FIG. 65 shows a new document in a new instance of the application.

FIGS. 66-68 shows a user importing a copy of the previously saved Smart Object into the new document in the same manner as discussed above.

FIGS. 69-71 show the user creating a new text box and populating it with a variable in the same manner as shown in FIGS. 61A-61C and FIG. 62. Again, the error has been removed.

FIG. 72 shows a self-explanatory hardware configuration for one preferred embodiment of the present invention.

As discussed above, rules may affect the appearance of an object (e.g., FIGS. 12-15 and 22-25). Rules can be simple or complex. For example, FIG. 6 shows a simple rule wherein the width of an image box is constrained to be exactly 3 inches. On the other hand, FIG. 34A shows a complex rule that can be expressed as follows:

“If the document type is an envelope, then the left side of the text box must be more than 0.5 inches from the left side of the page and less than the width of the page minus the width of the text box minus 0.5 inches from the left side of the page. Otherwise, the left side of the text box is unconstrained.”

Included in the Appendix is sample source code from the client application shown in the figures, and server-side code that interacts with the aforementioned client application. The following information is provided to assist in an understanding of the sample source code:

a) The client-side application is a document composition application created with the Adobe® Flex® 2.0.1 framework and compiler. The server side code was implemented using ASP.NET and Weborb 3.3.

b) Calls to server-side methods retrieve assets (e.g., images, data lists, templates) which are identified by an integer id. Asset collections (list of images, list of smart objects), which is a list of all available assets of a given type, may also be retrieved. Lastly, documents may be received as templates identified by an integer, or job pages identified by a pair of integers.

c) Multiple files are included in the Appendix. Start of files are marked with “FILE START:” followed by the relative file path. The end of files are marked with “FILE END:” followed by the relative file path. These start and end lines are not part of compilable code. XML and XML list snippets are headed by appropriate comments. The syntax of the source code identifies what language the code is written in and thus how the code may be compiled and executed. For further detail, “.as” and “.mxml” files are client-side Adobe Flex files and “.cs” files are c# files server-side files.

d) The following additional information is provided to assist in the compiling of the client side code provided in the Appendix:

-   -   i) Files in the mx.graphics packages and its sub-packages are         not included in the Appendix. However, these files are only used         to create graphical previews of objects and documents, and thus         are not required for implementing the present invention.     -   ii) The class “OpenNumericStepper” was omitted from the         Appendix. This class is a derivative of the class NumericStepper         from the Flex 2.0.1 framework. To recreate this class, the         non-public properties and methods are changed to public         properties and methods.     -   iii) Artwork to be embedded in the application (e.g., icons) is         not included. When compiling the code, replacement artwork         should be provided as necessary.     -   iv) Font files are not included. This application uses “embedded         fonts” loaded from external Adobe Flashy files, but could be         modified to use “device fonts” without changing the material         functionality of the application.     -   v) The uri of some locations have been redacted. The vast         majority of the functionality at these locations is irrelevant         to the functioning of this source code and can be ignored or         coded around. Material functionality located at these locations         is explicitly addressed below.

e) The following is a discussion of the relevant server-side code:

-   -   i) The asp pages, referenced in the code as “imageDownloadPage”         and “DAMThumbnailImagePage”, are passed an asset number for an         asset of type image. These pages return the asset image or         thumbnail of the asset image, respectively.     -   ii) Sample remoting code using WebORB is provided, including the         List Provider MailingListProvider. MailingListProvider is         included in the Appendix as a representative example of other         List Providers that allow for the retrieval of list assets from         the server to the client. The data serialization is the standard         serialization done by WebORB.     -   iii) The web service method “getImage” returns data for the         image with the id that was passed to the method. An example of         this data format is included in the Appendix.     -   iv) The web service method “getDAMImages” returns a list of data         for all image assets in the form of a list of xml. An example of         this data format is included in the Appendix.     -   v) The web service method “getDocument” is passed a template id,         a job id and a page id. If the template id is not 0, then the         template with that id is returned. Otherwise, the page of the         job of the respectively passed ids is returned. In either event,         a document is returned in xml format. An example document is         included in the Appendix.     -   vi) The web service method “saveDocument” is passed a document         in xml format and an id. The document format is the same as the         document format referred to in section v. A Boolean value and         preview image are also passed, as seen in the client-side code         in the Appendix. These items are not relevant to the         functionality of the preferred embodiments and thus are not         further discussed. If the document is a template, the template         id is passed as the id. Otherwise, the job number and the page         number separated by a comma is passed.     -   vii) The web service method “getObjects” returns a list of all         smart object assets in the form of a list of xml. An example of         this data format is included in the Appendix.     -   viii) The web service method “saveObject” takes a serialized         version of a Smart Object. An example of this data format is         included in the Appendix. A description, comment, and image         preview are passed to this web method, as seen in the         client-side code in the Appendix. These items are not relevant         to the functionality of the preferred embodiments and thus are         not further discussed. The server should save this serialized         data with a new id so that when “getObjects” is next called, the         newly saved objects are retrieved with all other preexisting         objects in the same format as referenced in section vii.     -   ix) Any GUIDs passed to a web method, as seen in the client-side         code in the Appendix, are not relevant to the functionality of         the preferred embodiments and thus are not further discussed.

In preferred embodiments described above and shown in the source code of the accompanying Appendix, the plurality of different environments is a plurality of different documents. In an alternative embodiment, the plurality of different environments may be a plurality of different applications.

One preferred embodiment of the present invention is implemented via the source code in the accompanying Appendix. However, the scope of the present invention is not limited to this particular implementation of the invention.

Figures include icons created by Mark James from

“http://WorldWideWeb.famfamfam.com/lab/silk/” licensed under the Creative Commons Attribution 2.5 License.

The present invention may be implemented with any combination of hardware and software. If implemented as a computer-implemented apparatus, the present invention is implemented using means for performing all of the steps and functions described above.

The present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer useable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the mechanisms of the present invention. The article of manufacture can be included as part of a computer system or sold separately.

It will be appreciated by those skilled in the art that changes could be made to the embodiments described above without departing from the broad inventive concept thereof. It is understood, therefore, that this invention is not limited to the particular embodiments disclosed, but it is intended to cover modifications within the spirit and scope of the present invention.

While the present invention has been particularly shown and described with reference to one preferred embodiment thereof, it will be understood by those skilled in the art that various alterations in form and detail may be made therein without departing from the spirit and scope of the present invention. 

1. An object that is usable in a plurality of different environments, the object comprising at least one property having an associated rule that affects the object, wherein the object and the at least one property and associated rule exists outside of an environment that the object is used in, the rule associated with the at least one property being enforced in the plurality of different environments.
 2. The object of claim 1 wherein the rule is an invariant.
 3. The object of claim 1 wherein the plurality of different environments is a plurality of different documents.
 4. The object of claim 1 wherein the rule affects the appearance of the object.
 5. A method of creating an object that is usable in a plurality of different environments, the method comprising: (a) defining an object comprising at least one property having an associated rule; (b) defining the associated rule; and (c) storing the object for subsequent use in the plurality of different environments, wherein the created object and the at least one property and associated rule exists outside of an environment that the created object is used in, the rule associated with the at least one property being enforced in the plurality of different environments.
 6. The method of claim 5 wherein the rule is an invariant.
 7. The object of claim 5 wherein the rule affects the appearance of the object.
 8. A method of employing an object that is usable in a plurality of different environments, the object comprising at least one property having an associated rule, wherein the object and the at least one property and associated rule exists outside of an environment that the object is used in, the rule associated with the at least one property being enforced in the plurality of different environments, the method comprising: (a) importing a copy of the object into an environment; and (b) enforcing the rule associated with the at least one property in the environment.
 9. The method of claim 8 wherein the rule is an invariant.
 10. The method of claim 8 wherein the rule affects the appearance of the object.
 11. An object that is usable in a plurality of different environments, the object comprising at least one property having an associated rule that affects the environment that the object is used in, wherein the object and the at least one property and associated rule exists outside of an environment that the object is used in, the rule associated with the at least one property being enforced in the plurality of different environments.
 12. The object of claim 11 wherein the rule is that certain text and/or images must be used in the environment whenever the object is used in the environment.
 13. The object of claim 11 wherein the plurality of different environments is a plurality of different documents.
 14. A method of creating an object that is usable in a plurality of different environments, the method comprising: (a) defining an object comprising at least one property having an associated rule that affects the environment that the object is used in; (b) defining the associated rule; and (c) storing the object for subsequent use in the plurality of different environments, wherein the created object and the at least one property and associated rule exists outside of an environment that the created object is used in, the rule associated with the at least one property being enforced in the plurality of different environments.
 15. A method of employing an object that is usable in a plurality of different environments, the object comprising at least one property having an associated rule that affects the environment that the object is used in, wherein the object and the at least one property and associated rule exists outside of an environment that the object is used in, the rule associated with the at least one property being enforced in the plurality of different environments, the method comprising: (a) importing a copy of the object into an environment; and (b) in the environment, enforcing the rule associated with the at least one property. 